<?php
/**
 * Created by PhpStorm.
 * User: zhangrxiang
 * Date: 2016/10/13
 * Time: 10:01
 * Project name: PHPTEST
 * File name: string.php
 * @copyright Copyright (c) 2016 ZRX Software LLC
 * @license https://github.com/zhangrxiang
 * @since
 */
function br(){
    echo "<br/>";
}
function br_($name = ''){
    echo "<br/><span style='color: #524dfe;font-family:\"Segoe Script\"'>{$name}</span>-------------------------------------------------------------------------<br/>";
}
//addcslashes
/**
 * string addcslashes ( string $str , string $charlist )
 * 返回字符串，该字符串在属于参数 charlist 列表中的字符前都加上了反斜线
 */

echo addcslashes('foo[ ]', 'A..z');
// 输出：\f\o\o\[ \]
// 所有大小写字母均被转义
// ... 但 [\]^_` 以及分隔符、换行符、回车符等也一并被转义了。
br();
echo addcslashes('asdf','a..z');
br();
echo addcslashes('n\a\b\c\d\1\2\3\4456   ','A..z');
br();
//echo addcslashes('[asd]','a..Z');//addcslashes(): Invalid '..'-range, '..'

br_();

/**
 * string addslashes ( string $str )
 * 返回字符串，该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。
 * 这些字符是单引号（'）、双引号（"）、反斜线（\）与 NUL（NULL 字符）。
 */
echo addslashes('`test`');
br();
echo addslashes("I'm a boy");


br_('bin2hex');

/**
 * string bin2hex ( string $str )
 * 返回 ASCII 字符串，为参数 str 的十六进制表示。转换使用字节方式，高四位字节优先。
 */
echo bin2hex('0x00');
br();
echo bin2hex('a');
br();
echo bin2hex('`');
br_('chr');

/**
 * string chr ( int $ascii )
 * 返回相对应于 ascii 所指定的单个字符。
 */
echo chr(72);
echo chr(96);

br_('chunk_split');
/**
 * string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )
 * 使用此函数将字符串分割成小块非常有用。
 * 例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。
 */
echo(chunk_split('string.string',3, $end = "\r\n" ));

br_('convert_cyr_string');
/**
 * string convert_cyr_string ( string $str , string $from , string $to )
 * 此函数将给定的字符串从一种 Cyrillic 字符转换成另一种，返回转换之后的字符串。
 */
/*
 * ◦k - koi8-r
◦w - windows-1251
◦i - iso8859-5
◦a - x-cp866
◦d - x-cp866
◦m - x-mac-cyrillic
 */
convert_cyr_string('str','iso8859-5','iso8859-5');


br_('convert_uudecode');
/**
 * string convert_uudecode ( string $data )
 * convert_uudecode() 解码一个 uuencode 编码的字符串。
 */
$string = convert_uuencode('string');
//echo '-------------<br>';
//echo ''.$string.'';
//echo addcslashes($string,'A..z');
//echo '======';
br();
//echo convert_uudecode($string);
br();
//$string = convert_uuencode('zhangrxiang');
//echo '-------';
//echo $string;
//br();
//echo convert_uudecode($string);
//$string = convert_uuencode('test');
//br();
//echo '-------';
//echo $string;
//br();
//echo convert_uudecode($string);


br_('count_chars');
/**
 * mixed count_chars ( string $string [, int $mode = 0 ] )
 * 统计 string 中每个字节值（0..255）出现的次数，使用多种模式返回结果。
 */
//var_dump( count_chars("Two Ts and one F.",0) );
//var_dump( count_chars('Two Ts and one F.',1) );
//var_dump( count_chars('Two Ts and one F.',2) );
//var_dump( count_chars('Two Ts and one F.',3) );

br_('crc32');
/**
 * int crc32 ( string $str )
 * 生成 str 的 32 位循环冗余校验码多项式。这通常用于检查传输的数据是否完整。
 */
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);


br_();

$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz


parse_str($str,$a);
var_dump($a);
echo $a['first'];
br();
echo $a['arr'][0];
$str = "first=value?arr[]=foo+bar?arr[]=baz";
parse_str($str,$a);
var_dump($a);//value?arr[]=foo bar?arr[]=baz


